/*
 * Fila.java
 *
 * Created on 11 de agosto de 2003, 07:16 PM
 */

package Modelo;

/**
 *
 * @author  jreinoso
 */
import java.util.*;
public class EstructuraFila {
    
    Vector estructuraFila;
    
    /** Creates a new instance of Fila */
    public EstructuraFila() {
        estructuraFila = new Vector();
    }
    
    public void adicionar(String pAtributo, String pTipo,boolean pObligatoriedad){
        AtributoTipo at = new AtributoTipo(pAtributo, pTipo, pObligatoriedad);
        estructuraFila.addElement(at);
    }
    
    public void adicionar(String pAtributo, String pTipo, boolean pObligatoriedad,String pAliasTabla){
        AtributoTipo at = new AtributoTipo(pAtributo, pTipo, pObligatoriedad,pAliasTabla);
        estructuraFila.addElement(at);
    }
    
    // retorna error si no encontro 
    public String getTipo(String pAtributo) throws Exception{
        for(int i=0; i < estructuraFila.size(); i++){
            AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(i);
            if (at.getAtributo().equals(pAtributo)) return at.getTipo();            
        }
        throw new Exception("No se encontro el atributo: " + pAtributo);
    }
    
     // retorna error si no encontro 
    public boolean getObligatoriedad(String pAtributo) throws Exception{
        for(int i=0; i < estructuraFila.size(); i++){
            AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(i);
            if (at.getAtributo().equals(pAtributo)) return at.getObligatoriedad();            
        }
        throw new Exception("No se encontro el atributo: " + pAtributo);
    }
    
    
       // retorna error si no encontro 
    public String getMetodo(String pAtributo) throws Exception{
        for(int i=0; i < estructuraFila.size(); i++){
            AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(i);
            if (at.getAtributo().equals(pAtributo)) 
                return at.getAliasTabla();            
        }
        throw new Exception("No se encontro el atributo: " + pAtributo);
    }
    public String getAtributo(int pIndex) throws Exception{
        if ( pIndex >= estructuraFila.size()) throw new Exception("EstructuraFila.getAtributo: index mayor al total del vector. " + pIndex + ":" + estructuraFila.size());
        AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(pIndex);         
        
        String elAlias = at.getAliasTabla();
        if (!elAlias.equals("")){
            elAlias+=".";
        }    
        
        return elAlias+at.atributo;        
    }
    
     public boolean getObligatoriedad(int pIndex) throws Exception{
        if ( pIndex >= estructuraFila.size()) throw new Exception("EstructuraFila.getObligatoriedad: index mayor al total del vector. " + pIndex + ":" + estructuraFila.size());
        AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(pIndex);         
        
        String elAlias = at.getAliasTabla();
        if (!elAlias.equals("")){
            elAlias+=".";
        }    
        
        return at.obligatoriedad;        
    }
    
    public AtributoTipo getAtributoTipo(int pIndex) throws Exception{
        if ( pIndex >= estructuraFila.size()) throw new Exception("EstructuraFila.getAtributo: index mayor al total del vector. " + pIndex + ":" + estructuraFila.size());
        AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(pIndex);         
        return at;        
    }
    
    public AtributoTipo getAtributoTipo(String pAtributo) throws Exception{
        for(int i=0; i<estructuraFila.size(); i++){
            AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(i);
            if (at.getAtributo().equals(pAtributo)) return at;
        }
        
        throw new Exception("EstructuraFila.getAtributoTipo(pAtributo): no se encontro el atributo. " + pAtributo);        
    }
    
    public int size(){
        return estructuraFila.size();
    }
    
    
    public String toString(){
        String s=null;
        for(int i=0; i < estructuraFila.size(); i++){
            AtributoTipo at = (AtributoTipo)estructuraFila.elementAt(i);
            if (s == null)
                s = " " + at.getAliasTabla()+"."+at.getAtributo() + ":" + at.getTipo();
            else
                s += " " + at.getAliasTabla()+ "." + at.getAtributo() + ":" + at.getTipo();       
        }
        return s;
    }
    
    
}
